Pinvon's Blog

所见, 所闻, 所思, 所想

Ubuntu Redis

Redis 简介

Redis 是一个高性能的键值对非关系型数据库, 支持存储的值类型包括: string, list, set, zset(有序集合), 这些数据类型都支持 push/pop, add/remove, 取交集, 取并集, 取差集等原子性操作.

为了保证效率, Redis 中的数据都是缓存在内存中的, 它会周期性地把更新的数据写入磁盘, 或者把修改操作写入追加的记录文件.

实现了主从(master-slave)同步.

安装

下载编译

wget http://download.redis.io/releases/redis-4.0.9.tar.gz
tar xzf redis-4.0.9.tar.gz
cd redis-4.0.9
make

启动 Redis 服务

编译好的二进制文件在 src 目录下, 通过如下命令启动 Redis 服务:

src/redis-server

启动 Redis 服务时, 默认监听 6379 端口. 通过 --port 参数可以自定义端口号:

redis-server --port 6380

启动 Redis 客户端

src/redis-cli
// 等价于
src/redis-cli -h 127.0.0.1 -p 6379

// 设置键值对: foo-bar
set foo bar

get foo // "bar"

如果强行停止 Redis, 可能会导致内存中的数据来不及同步到磁盘就被关闭. 因此, 正确停止 Redis 的方式为:

redis-cli SHUTDOWN

常用操作

Redis 以 <key, value> 的形式存储数据.

如果要往某个表中写入数据, key=表名:主键的值:列名, value=列值.

如, Users 表中, id 为主键, name 为其中一个列名. 则 key=Users:1:name, key=Users:2:name, 等等.

插入数据

只要我们提前设计好 key 和 value 即可.

set Users:1:name Pinvon

修改数据

Redis 中没有修改数据的命令, 如果想修改数据, 只能使用 set 命令, 对相同的 key 赋予和之前不同的 value. 如, 将之前的用户名 Pinvon 改成 Penglaozi.

set Users:1:name Penglaozi

查询数据

查询数据, 使用 get 命令, 再把 key 输入即可.

get Users:1:name  // Penglaozi

删除数据

使用 del 命令删除数据.

del Users:1:name

此时, 再使用 get 查询该 key, 会发现输出为空.

选择数据库

Redis 默认支持 16 个数据库, 可以通过修改配置来改变这个数字. cli 与 server 连接后自动选择 0 号数据库, 要切换数据库, 可以这么写:

SELECT 1  // OK

这样就选择了 1 号数据库.

但这些不同的数据库并不是完全隔离的, 有些命令会对所有的数据库同时生效. 所以一般情况下, 一个应用程序就应该对应一个 Redis, Redis 非常轻量, 只占用 1MB 左右的空间, 所以不必担心多个 Redis 实例会占用很多内存.

要想在一台机器上启动多个 Redis, 需要修改配置, 如, 让它们监听不同的端口, 还有一些其他的配置, 可以查看 Redis分片.

Comments

使用 Disqus 评论
comments powered by Disqus